home *** CD-ROM | disk | FTP | other *** search
- {$S-,R-,V-,I-,N-,B-,F-}
-
- {$IFNDEF Ver40}
- {Allow overlays}
- {$F+,O-,X+,A-}
- {$ENDIF}
-
- UNIT Self;
-
- INTERFACE
-
- FUNCTION GetSelf : STRING;
- FUNCTION GetSelfPath : STRING;
-
- IMPLEMENTATION
-
- FUNCTION GetSelf : STRING;
-
- VAR
- Temp : STRING;
- I, EnvSeg : WORD;
- BEGIN
- I := 0;
- Temp := '';
- EnvSeg := memw [prefixseg : $2C]; { have to set this up like any variable! }
- WHILE memw [EnvSeg : I] <> 0 DO { read through environment strings }
- INC (I);
- INC (I, 4); { jump around 2 null bytes & word count }
- WHILE mem [EnvSeg : I] <> 0 DO { skim off path & filename }
- BEGIN
- Temp := Temp + UPCASE (CHR (mem [EnvSeg : I]) );
- INC (I);
- END;
- GetSelf := Temp;
- END; { function GetSelf }
-
-
- FUNCTION GetSelfPath : STRING;
-
- VAR
- Temp : STRING;
- I, EnvSeg : WORD;
- Place : INTEGER;
- BEGIN
- I := 0;
- Temp := '';
- EnvSeg := memw [prefixseg : $2C]; { have to set this up like any variable! }
- WHILE memw [EnvSeg : I] <> 0 DO { read through environment strings }
- INC (I);
- INC (I, 4); { jump around 2 null bytes & word count }
- WHILE mem [EnvSeg : I] <> 0 DO { skim off path & filename }
- BEGIN
- Temp := Temp + UPCASE (CHR (mem [EnvSeg : I]) );
- INC (I);
- END;
- Place := LENGTH (Temp);
- WHILE (Place > 0) AND NOT (Temp [Place] IN [':', '\']) DO
- Place := PRED (Place);
- IF Place > 0 THEN Temp [0] := CHR (Place);
- GetSelfPath := Temp;
- END; { function SelfPath }
-
- END.